package cn.tedu.v4;

/**
 * 多线程并发安全问题
 *
 * 客户端  多线程并发  x    服务器  多线程并发  v
 *
 * synchronized  关键字  --- 多线程并发  同步锁
 *
 * 使用方式①：同步块方式  最常用，同步：控制线程执行顺序，避免线程之间冲突
 *       ②：同步方法    一个线程执行完毕之后，在执行下一个
 * 定义语法：
 * synchronized(同步监视器对象){
 *         需要同步运行的代码块
 *      }
 *
 */
public class Thread_syn {
    public static void main(String[] args) {
        //创建厕所类
        WC wc=new WC();
        //创建第一个人--线程
        Thread p1=new Thread(()->{
            wc.door();//找厕所门
        });
        p1.start();
        Thread p2=new Thread(()->{
            wc.door();//找厕所门
        });
        p2.start();
    }

}
//创建厕所类
    class WC{
    public void door(){//去厕所
        //线程案例--记录线程信息
        Thread s=Thread.currentThread();
        System.out.println(s.getName()+"去厕所....");
        try {
            //同步锁：门加一把功能锁
            synchronized (this) {
                Thread.sleep(5000);
                System.out.println(s.getName() + "找门进去");
            }
            Thread.sleep(3000);
            System.out.println(s.getName()+"穿裤子走人....");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
